package xx.services.page.rest;

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;

import xx.entity.page.PageTab;
import xx.services.Passport;
import xx.services.page.inter.ITabInterface;
import xx.services.util.Constants;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

/**
 * page页面Tab管理服务接口
 * 
 * @Path (Constants.RESTFUL_ROOT_PATH + "/page/tab")
 * @author dengjinye,2010-12-22 $LastChangedDate$ $Author$
 */
@Path(Constants.RESTFUL_ROOT_PATH + "/page/tab")
public class TabRest extends Passport implements ITabInterface
{

    public TabRest(@Context
    HttpServletRequest request)
    {
        super(request);
        // TODO Auto-generated constructor stub
    }

    /**
     * 描述：删除Tab demo。<br>
     * 
     * @DELETE
     * @Path ("/{tab_id}")
     * @param tabId-@PathParam("tab_id")
     *            Tab ID，多个Tab ID用“_”隔开
     * @return true-删除成功，string-其他删除失败（string就是失败原因）
     * @author chenxiang
     */
    @DELETE
    @Path("/{tab_id}")
    public String delete(@PathParam("tab_id")
    String tabId)
    {
        // TODO Auto-generated method stub
        return null;
    }

    /**
     * 描述：获取一个Tab demo，包含Item<br>
     * 
     * @GET
     * @Path ("/{tab_id}")
     * @param tabId-@PathParam("tab_id")
     *            Tab ID
     * @return Tab 实体，包含Item
     * @author chenxiang
     */
    @GET
    @Path("/{tab_id}")
    public String get(@PathParam("tab_id")
    long tabId)
    {
        try
        {
            PageTab pt = new PageTab(qr, owner);
            pt.setTabId(tabId).load();
            return ok(pt);
        }
        catch (Exception e)
        {
            return error(e);
        }
    }

    /**
     * 获取一个Tab html代码，包含Item<br>
     * 
     * @GET
     * @Path ("/{tab_id}/html")
     * @param tabId-@PathParam("tab_id")
     *            Tab ID
     * @return Tab Html代码，不是json数据
     * @author chenxiang
     */
    @GET
    @Path("/{tab_id}/html")
    public String getHtml(@PathParam("tab_id")
    long tabId)
    {
        try
        {
            PageTab pt = new PageTab(qr, owner);
            String html = pt.setTabId(tabId).toHtml();
            return ok(html, HTML);
        }
        catch (Exception e)
        {
            return error(e);
        }
    }

    /**
     * 修改一个Tab demo。<br>
     * 
     * @PUT
     * @Path ("/{tab_id}")
     * @param tabId-@PathParam("tab_id")
     *            Tab ID
     * @param tab-@FormParam("tab")
     *            Tab demo的Json字符串
     * @return 新增的Tab 实体
     * @author chenxiang
     */
    @PUT
    @Path("/{tab_id}")
    public String update(@PathParam("tab_id")
    long tabId, @FormParam("tab")
    String tab)
    {
        try
        {
            PageTab pt = new PageTab(qr, owner);
            pt.setTabId(tabId);
            JsonParser parser = new JsonParser();
            JsonObject jo = parser.parse(tab).getAsJsonObject();
            pt.update(jo);
            return ok(pt);
        }
        catch (Exception e)
        {
            return error(e);
        }
    }

}
